package com.sc.nft.dao;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sc.nft.entity.SaasTaskMeetConditionsLocation;
import com.sc.nft.enums.SaasTaskMeetConditionsLocationEnum;
import com.sc.nft.mapper.SaasTaskMeetConditionsLocationMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 任务条件的生效位置(SaasTaskMeetConditionsLocation)表Dao层
 *
 * @author 王伟成
 * @since 2024-04-12 20:00:32
 */
@Slf4j
@Repository
public class SaasTaskMeetConditionsLocationDao extends ServiceImpl<SaasTaskMeetConditionsLocationMapper, SaasTaskMeetConditionsLocation> {

    public void deleteBySaasTaskId(Long taskId) {
        this.lambdaUpdate().eq(SaasTaskMeetConditionsLocation::getSaasTaskId, taskId).remove();
    }

    public List<SaasTaskMeetConditionsLocation> getByMeetConditionsAndSaasTaskId(Long meetConditionsId, Long taskId) {
        return this.lambdaQuery().eq(SaasTaskMeetConditionsLocation::getMeetConditionsId, meetConditionsId).eq(SaasTaskMeetConditionsLocation::getSaasTaskId, taskId).list();
    }

    public List<SaasTaskMeetConditionsLocationEnum> getByTaskIdLocation(Long id) {
        return this.lambdaQuery().eq(SaasTaskMeetConditionsLocation::getSaasTaskId, id).list().stream().map(SaasTaskMeetConditionsLocation::getLocation).collect(Collectors.toList());
    }

    public SaasTaskMeetConditionsLocation getByTaskAndLocation(SaasTaskMeetConditionsLocationEnum locationEnum, Long taskId) {
        return this.lambdaQuery().eq(SaasTaskMeetConditionsLocation::getSaasTaskId, taskId).eq(SaasTaskMeetConditionsLocation::getLocation, locationEnum).one();
    }
}
